package com.gxa.ssm251.controller;

import com.gxa.ssm251.exception.BusinessException;
import com.gxa.ssm251.util.JsonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


//PS:如果在controller中配置了@ExceptionHandler，那么优先执行自身的异常处理规则，
// 如果自身处理没有catch到异常，才会使用全局异常拦截。
//  将异常分为:BusinessException extends RuntimeException(业务异常)
//  1.如果是业务异常,将异常信息和状态返给前端展示
//  2.其它异常类型:记录日志并给前端返回:500状态和”服务器异常,请稍后再试”
@Controller
@ControllerAdvice
@RequestMapping("/exception")
public class ExceptionController {


    @ExceptionHandler(Throwable.class)
    @ResponseBody
    public JsonResult throwablehandler(Exception e) {
        JsonResult jsonResult = new JsonResult();
        System.out.println("e = " + e);
        if (e instanceof BusinessException){
            //给前端返回消息:
            //code:0/1
            //status:400:参数类型或数量不匹配
                       //404:资源再找不到
                       //405:GET/POST 方式不对
                     //500:自查

            //msg
        }else {
            //记录日志

        }
 return jsonResult;
    }

//    @ExceptionHandler(IndexOutOfBoundsException.class)
//    public String check() {
//        System.out.println("挂了吧！！！开心，下标超界");
//        return "login";
//    }


//    @ExceptionHandler(NumberFormatException.class)
//    public String check2() {
//        System.out.println("挂了吧！！！开心，数字转换出错");
//        return "login";
//    }
}
